#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>

typedef struct{
	char *name;
	int age;
} Student;

int main()
{

	Student stu1 = {"吴开杰",12};

	printf("stu1.name = %s, stu1.age = %d\n",stu1.name,stu1.age);

	Student stu2;

	/*
	 * Java中，stu2=stu1，相当于让stu2变成stu1
	 * C中，stu2=stu1，相当于将stu1的属性值复制到stu2
	 * */
	stu2 = stu1;

	printf("stu1  = %p, stu2 = %p\n",&stu1,&stu2);

	printf("stu2.name = %s, stu2.age = %d\n",stu2.name, stu2.age);

	// 将结构体中name指针，指向常量区中的“Tom”
	stu2.name = "Tom";

	// 这里会出现问题，将“Jack”复制给name指针是错误的
	//strcpy(stu2.name,"Jack");

	// 结构体中的指针必须进行初始化
	// 结构体指针可以指向任何地址，但是指针的大小只有4个字节
	// 结构体指针指向动态申请的内存是可以的
	stu2.name = (char *)malloc(sizeof(int)*8);
	
	strcpy(stu2.name,"Jack2");

	printf("stu2.name = %s, stu2.age = %d, Student struct size = %ld\n",stu2.name, stu2.age,sizeof(Student));

	// 结构体指针偏移


	exit(0);
}
